1. Field of the Invention
The present invention relates, in general, to methods and techniques of setting up and configuring the services that run on single or multiple computer systems, network systems, or storage systems, including those within or between data centers, which may include provisioning of services and software applications within or between such single or multiple computer systems, network systems, or storage systems, and, more particularly, to a method, and systems configured to support using such a method, for automating the provisioning of single or multiple computer systems, network systems, or storage systems, such as a data center or the like, including providing a virtualization layer between a user interface or input mechanism and one or more provisioning, monitoring, or network-based policy products or applications, and communicating with agents hosted in single or multiple computer systems, network systems, or storage systems to collect real time configuration and other data useful for determining provisioning processes and managing dependencies during provisioning.
2. Relevant Background
The complexity of building and managing computing environments, such as data centers, has increased significantly in recent years. System administrators are often responsible for managing numerous hardware components including hundreds or even thousands of servers, switches, applications, and data storage devices. As companies add new servers or otherwise change the configuration of the computing environment such as by re-provisioning existing servers, switches and storage systems, the company is faced with large costs associated with administrator time, e.g., hours or days depending on the system, as many provisioning and configuration tasks are performed manually. As the number, complexity, and dynamic nature of systems grows, even routine administrative tasks can become complicated and time consuming. Additionally, the amount of human operator involvement in the provisioning tasks can result in error and operating problems or inefficiencies. Finally, humans may not always make the optimization decisions, but instead, control devices and policy based network management systems are frequently asked to optimize multiple decisions. System administrators continue to look for tools to simplify and automate the provisioning process.
For example, provisioning in a data center may involve an administrator bringing in new server or other hardware devices. The administrator manually provides communication cabling and power to the server, and then, loads an operating system including deciding which version, what agents to provide, and assigning an IP or network address. The provisioning of the new server may further include configuring data storage and network components, e.g., a switch or the like, to support the new server. Applications have to be loaded and any additional support code provided in the server. Finally, the server, application, network and storage systems are typically hooked into an enterprise-wide observability system, and often work in concert with other local or distributed services (e.g., directory/identity, caches, backup, and security). Dependencies can become problematic during the provisioning process as certain tasks have to be performed in specific orders and may affect later tasks. Specifically, the loading and configuring of the applications may affect the network components, which may have to be reconfigured. Network changes may change storage requirements, but most likely server changes will require network or storage configuration changes. The system administrator not only must be aware of the dependencies arising during the manual provisioning but must understand the order in which provisioning should be completed. Provisioning is a time consuming process that typically has to be done sequentially by the administrator. Due to the amount of administrator involvement, the number and types of human or operator error that may occur is quite large and is difficult to avoid. Additional complexity is added when multiple systems must act in concert to provide a service: a traditional three-tiered service (web servers, application servers, database servers) is a simple example of a service that may span multiple datacenters, heterogeneous systems, or owners. Finally, there is typically a reason that computer systems, network systems and storage systems are being provisioned such as in response to new business opportunities, the need for a larger set of functionality, or an increase in the number of end users.
Hence, there remains a need for a method and system for automating at least portions of the provisioning of a computing environment such as a data center. Preferably, such a method and system would provide a way of orchestrating the entry of management and control information by an administrator with the automated control and interfacing with provisioning tools to reduce the amount of time required for provisioning and the number of errors. Such a system preferably would also provide a “pluggable” set of interfaces to allow connection to a variety of provisioning systems.